home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d12
/
ecstr2.arc
/
STRTRANS.C
< prev
next >
Wrap
C/C++ Source or Header
|
1987-03-04
|
1KB
|
46 lines
/* File : strtrans.c
Author : Richard A. O'Keefe.
Updated: 2 June 1984
Defines: strtrans()
strtrans(dst, src, from, to)
copies characters from src[] to dst[], stopping when dst gets a NUL
character, translating characters in from[] to the corresponding
characters in to[]. Courtesy of _str2map, if from or to is null its
previous value will be used, and if both are NullS the table won't
be rebuilt. Note that copying stops when a NUL is put into dst[],
which can normally happen only when a NUL has been fetched from
src[], but if you have built your own translation table it may be
earlier (if some character is mapped to NUL) or later (if NUL is
mapped to something else). No value is returned.
The VaxAsm version only works from strlen(src) < 2^16.
*/
#include "strings.h"
#include "_str2map.h"
#if VaxAsm
void strtrans(dst, src, from, to)
_char_ *dst, *src, *from, *to;
{
_str2map(0, from, to);
asm("movtuc $65535,*8(ap),$0,__map_vec,$65535,*4(ap)");
/* That stops when the "escape" is found, and we want to move it */
asm("movb $0,(r5)");
}
#else ~VaxAsm
void strtrans(dst, src, from, to)
register _char_ *dst, *src;
_char_ *from, *to;
{
_str2map(0, from, to);
while (*dst++ = _map_vec[*src++]) ;
}
#endif VaxAsm